package com.ruoyi.user.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.dddetails.domain.DdDetails;
import com.ruoyi.disease.domain.Disease;
import com.ruoyi.doctorlibrary.domain.DoctorLibrary;
import com.ruoyi.income.domain.Income;
import com.ruoyi.withdrawaltable.domain.WithdrawalTable;
import com.ruoyi.workexperience.domain.WorkExperience;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
@ApiModel(description = "用户信息视图对象")
public class UserVO implements Serializable {
    @ApiModelProperty(value = "id", example = "id")
    private Long id;

    @ApiModelProperty(value = "用户id", example = "用户id")
    private String userId;

    @ApiModelProperty(value = "用户名/账号", example = "用户名/账号")
    private String username;

    @ApiModelProperty(value = "手机号", example = "手机号")
    private String phone;

    @ApiModelProperty(value = "姓名", example = "姓名")
    private String name;

    @ApiModelProperty(value = "年龄", example = "年龄")
    private Long age;

    @ApiModelProperty(value = "性别", example = "性别")
    private String gender;

    @ApiModelProperty(value = "身份证", example = "身份证")
    private String idCard;

    @ApiModelProperty(value = "邀请码", example = "邀请码")
    private String invitationCode;

    @ApiModelProperty(value = "密码", example = "密码")
    private String password;

    @ApiModelProperty(value = "头像地址", example = "头像地址")
    private String imageAddress;

    @ApiModelProperty(value = "是否是专家, 0-是, 1-不是", example = "是否是专家, 0-是, 1-不是")
    private Long isExpert;

    @ApiModelProperty(value = "所在地址", example = "所在地址")
    private String address;

    @ApiModelProperty(value = "是否公立, 0-是, 1-不是, 2-不限", example = "是否公立, 0-是, 1-不是, 2-不限")
    private Long isPublic;

    @ApiModelProperty(value = "昵称", example = "昵称")
    private String nickname;

    @ApiModelProperty(value = "邀请人id", example = "邀请人id")
    private String inviterId;

    @ApiModelProperty(value = "简历", example = "简历")
    private String workExperience;

    private List<String> workExperienceList;

    @ApiModelProperty(value = "是否可用, 0-正常, 1-禁用", example = "是否可用, 0-正常, 1-禁用")
    private String userStatus;

    @ApiModelProperty(value = "创建时间", example = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @ApiModelProperty(value = "是否审核通过0-通过, 1-驳回", example = "是否审核通过0-通过, 1-驳回")
    private String processStatus;

    @ApiModelProperty(value = "叮豆总数", example = "叮豆总数")
    private BigDecimal ddTotalNumber;

    @ApiModelProperty(value = "累计叮豆", example = "1000")
    private BigDecimal cumulativeDd;

    @ApiModelProperty(value = "专家总收益", example = "专家总收益")
    private BigDecimal totalAmount;

    @ApiModelProperty(value = "冻结金额", example = "冻结金额")
    private BigDecimal freezeAmount;

    @ApiModelProperty(value = "可提现金额", example = "可提现金额")
    private BigDecimal withdrawableAmount;

    @ApiModelProperty(value = "微信支付ID", example = "微信支付ID")
    private String wxPayId;

    @ApiModelProperty(value = "支付时间", example = "支付时间")
    private Date payTime;

    @ApiModelProperty(value = "叮豆明细", example = "叮豆明细")
    private List<DdDetails> ddDetailsList;

    @ApiModelProperty(value = "收益明细", example = "收益明细")
    private List<Income> incomeList;

    @ApiModelProperty(value = "被邀请用户列表", example = "被邀请用户列表")
    private List<IUser> iUserList;

    @ApiModelProperty(value = "专家列表", example = "专家列表")
    private List<Expert> expertList;

    @ApiModelProperty(value = "病症列表", example = "病症列表")
    private List<Disease> diseaseList;

    @ApiModelProperty(value = "病症ID列表", example = "病症ID列表")
    private List<Long> diseaseIds;

    @ApiModelProperty(value = "医生库列表", example = "医生库列表")
    private List<DoctorLibrary> doctorLibraryList;

    @ApiModelProperty(value = "提现列表", example = "提现列表")
    private List<WithdrawalTable> withdrawalTableList;

    private String code;

    @ApiModelProperty(value = "服务端唯一标识", example = "服务端唯一标识")
    private String serviceOpenId;

    @ApiModelProperty(value = "资质提交次数", example = "资质提交次数")
    private Integer qualificationsInt;

    @ApiModelProperty(value = "工作经历列表", example = "工作经历列表")
    List<WorkExperience> workExperiences;
}
